package com.lab.entity;

import lombok.Data;
import java.time.LocalDateTime;

/**
 * 周报表主表实体类（映射数据库weekly_report表）
 * 存储成员周报的主记录信息，与周报内容表为一对多关系，用于聚合每周进度报告
 */
@Data
public class WeeklyReport {

    /**
     * 主键ID（自增）
     * 对应数据库表字段：id INT NOT NULL AUTO_INCREMENT
     */
    private Integer id;

    /**
     * 成员ID（关联成员表）
     * 对应数据库表字段：member_id INT NOT NULL
     * 外键约束：fk_weekly_report_member，级联删除（成员删除时同步删除其周报记录）
     * 与member表的id字段关联，标识周报所属成员
     */
    private Integer memberId;

    /**
     * 角色类型
     * 对应数据库表字段：role_type VARCHAR(20) NOT NULL
     * 与成员表的role_type保持一致（如"前端"、"后端"），用于按角色分类统计周报
     */
    private String roleType;

    /**
     * 报表年份
     * 对应数据库表字段：report_year YEAR NOT NULL
     * 标识周报所属的年份，与report_week共同确定周报的时间范围
     */
    private Integer reportYear;

    /**
     * 周数
     * 对应数据库表字段：report_week INT NOT NULL
     * 取值范围1-52，与report_year组合唯一标识某周（数据库唯一约束：uk_member_year_week）
     */
    private Integer reportWeek;

    /**
     * 提交时间
     * 对应数据库表字段：submit_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
     * 记录周报的提交时间，默认与创建时间一致，若支持修改则为最后一次提交时间
     */
    private LocalDateTime submitTime;

    /**
     * 创建时间
     * 对应数据库表字段：create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
     * 记录周报主记录的首次创建时间，由数据库自动生成
     */
    private LocalDateTime createTime;

    /**
     * 更新时间
     * 对应数据库表字段：update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
     * 记录周报主信息最后一次修改的时间（如角色类型调整），由数据库自动更新
     */
    private LocalDateTime updateTime;
}